'use strict';
const Subscription = require('egg').Subscription;
const dayjs = require('dayjs');
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();

const birthdayList = [
  { name: 'LYG', date: '4-18' },
  { name: 'YZX', date: '11-20' },
  {
    name: '张柯鑫',
    date: '11-16',
  },
  {
    name: '高敏特',
    date: '3-12',
  },
  {
    name: '郑伟煌',
    date: '12-13',
  },
  {
    name: '沈家宇',
    date: '12-22',
  },
  {
    name: '王紫嫣',
    date: '12-10',
  },
  {
    name: '吴美君',
    date: '3-24',
  },
  {
    name: '王佳闻',
    date: '4-17',
  },
  {
    name: '李峰',
    date: '2-18',
  },
  {
    name: '金琴君',
    date: '3-13',
  },
];

// LYG 日报
class DailyTaskLygCache extends Subscription {
  static get schedule() {
    return {
      // interval: '2s',
      type: 'worker',
      cron: '0 0 8,20 * * *',
    };
  }
  async subscribe() {
    const { service } = this;
    const format = 'YYYY-MM-DD';
    const date_now = dayjs();
    const date_menses = dayjs('2022-6-25');
    const curbirthdayList = birthdayList
      .map(({ date, name }) => ({ name, date: `${date_now.year()}-${date}` }))
      .filter(({ date }) => date_now.diff(date, 'day') === 0);
    const subject = `${dayjs().format('YYYY-MM-DD')}日报`;
    await service.mailer.send({
      emails: ['1057966749@qq.com'],
      subject,
      html: md.render(`
# 日报

> 这是一份专属的每日日报  
> 记录每日应该要记得的事  

1. 距离2018年1月1日已有${date_now.diff('2018-1-1', 'day')}天。
1. 距离上一次大姨妈(${date_menses.format(format)})已有${date_now.diff(date_menses, 'day')}天。
1. 今天生日的有[${curbirthdayList.map(({ name }) => name).join('、')}]。
1. 建行生活签到。
1. 拼多多每周5元无门槛领取。
1. LeetCode每日一题。
1. Arcaea每日能量。
1. 扇贝英语每日打卡。
1. 番茄小说每日签到。`),
    });
    console.log('end');
  }
}

module.exports = DailyTaskLygCache;
